/**
 * Created by youbao qin on 2017/7/5.
 */
var fs = require("fs"),
    markdown = require("markdown").markdown,
    fileContent;
/**
 * 控制流/同步
 * @param {Array} arr
 * @param {Function} callback1 传递两个参数 (item,next)，执行完一项则需执行next()才能执行下一项
 * @param {Function} callback2 出错或执行完时回调
 * @returns {*}
 */
function async (arr, callback1, callback2) {
    if (Object.prototype.toString.call(arr) !== '[object Array]') {
        return callback2(new Error('第一个参数必须为数组'));
    }
    if (arr.length === 0)
        return callback2(null);
    (function walk(i) {
        if (i >= arr.length) {
            return callback2(null);
        }
        callback1(arr[i], function () {
            walk(++i);
        });
    })(0);
}
/**
 * 获取文件夹下面的所有的文件(包括子文件夹)
 * @param {String} dir
 * @param {Function} callback
 * @returns {Array}
 */
exports.getAllFiles = function (dir, callback) {
    var filesArr = [];
    dir = (function dir(dirpath, fn) {
            var files = fs.readdirSync(dirpath);
            async(files, function (item, next) {
                var info = fs.statSync(dirpath + item);
                if (info.isDirectory()) {
                    filesArr.push(dirpath+item);
                    dir(dirpath +item + '/', function () {
                        next();
                    });
                } else {
                    filesArr.push(dirpath+item);
                    // 读入 Markdown 源文件
                    fileContent = fs.readFileSync(dirpath+item, 'utf8');
                    // 使用 MarkdownJS 模块把源文件转换为 HTML 源代码
                    fileContent = markdown.toHTML(fileContent);
                    // 保存
                    fs.writeFileSync('views/markdown/'+item.split(".")[0]+".html", fileContent);
                    callback && callback(dirpath + item);
                    next();
                }
            },
            function (err) {
                !err && fn && fn();
            });
        })(dir);
    return filesArr;
}
